软考真题
第5题
阅读下列说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】
某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图5-1所示的类图。



【C++代码】

class LibraryVisitor;
class LibraryItemInterface {
public:
	(1) :
};
class Article : public LibraryItemInterface {
private:
	string	m_title;        /* 论文名 */
	string	m_author;       /* 论文作者 */
	int	m_start_page;
	int	m_end_page;
public:
	Article( string p_author, string p_title, int p_start_page, int p_end_page );
	int getNumber() fPages();


	void accept( Library Visitor* visitor );
};
class Book : public LibraryItemInterface {
private:
	string	m_title;        /* 书名 */
	string	m_author;       /* 作者 */
	int	m_pages;        /* 页数 */
public:
	Book( string p_author, string p_title, int p_pages );
	int getNumber() fPages();


	void accept( LibraryVisitor* visitor );
};
class LibraryVisitor {
public:
	(2);
	(3);
	virtual void printSum() = 0;
};
class LibrarySumPrintVisitor : public LibraryVisitor { /* 打印总页数 */
private:
	int sum;
public:
	LibrarySumPrintVisitor();
	void visit( Book* p_book );


	void visit( Article* p_article );


	void printSum();
};
/* visitor.cpp */
int Article : : getNumber() fPages()
{
	retum m_end_page - m_start_page;
}
void Article::accept( LibraryVisitor* visitor )
{
	(4);
}


Book: : Book( string p_author, string p_title, int p_pages )
{
	m_title		= p_title;
	m_author	= p_author;
	m_pages		= p_pages;
}
int Book::getNumberOfPages()
{
	return(m_pages);
}


void Book::accept( LibraryVisitor* visitor )
{
	(5);
}


/* 其余代码省略 */



【问题:5.1】(15分)
阅读上述说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
2015年 上半年 下午试卷 案例
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2015年 上半年 下午试卷 案例

笔记

again

请先在App中激活(应用市场搜“软考真题”)

2022-05-11


长安常安

请先在App中激活(应用市场搜“软考真题”)

2023-05-16


答题卡
加油
纠错
得分:0